/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

京东云解析OpenAPI接口
京东云解析OpenAPI接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef ClouddnsserviceClient_h
#define ClouddnsserviceClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKClouddnsservice/ClouddnsserviceApiModel.h>

@interface ClouddnsserviceClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    delDomain sync request
    @param delDomainRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `delDomainResponse` the request response data model
    */
    -(NSDictionary*) delDomainSyncWithRequest:(ClouddnsserviceDelDomainRequest*) delDomainRequest;

    -(void)delDomainAsyncWithRequest:(ClouddnsserviceDelDomainRequest*) delDomainRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceDelDomainResponse* _Nullable delDomainResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getDomainQueryCount sync request
    @param getDomainQueryCountRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getDomainQueryCountResponse` the request response data model
    */
    -(NSDictionary*) getDomainQueryCountSyncWithRequest:(ClouddnsserviceGetDomainQueryCountRequest*) getDomainQueryCountRequest;

    -(void)getDomainQueryCountAsyncWithRequest:(ClouddnsserviceGetDomainQueryCountRequest*) getDomainQueryCountRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceGetDomainQueryCountResponse* _Nullable getDomainQueryCountResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    batchSetDnsResolve sync request
    @param batchSetDnsResolveRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `batchSetDnsResolveResponse` the request response data model
    */
    -(NSDictionary*) batchSetDnsResolveSyncWithRequest:(ClouddnsserviceBatchSetDnsResolveRequest*) batchSetDnsResolveRequest;

    -(void)batchSetDnsResolveAsyncWithRequest:(ClouddnsserviceBatchSetDnsResolveRequest*) batchSetDnsResolveRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceBatchSetDnsResolveResponse* _Nullable batchSetDnsResolveResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getActionLog sync request
    @param getActionLogRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getActionLogResponse` the request response data model
    */
    -(NSDictionary*) getActionLogSyncWithRequest:(ClouddnsserviceGetActionLogRequest*) getActionLogRequest;

    -(void)getActionLogAsyncWithRequest:(ClouddnsserviceGetActionLogRequest*) getActionLogRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceGetActionLogResponse* _Nullable getActionLogResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getDomainQueryTraffic sync request
    @param getDomainQueryTrafficRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getDomainQueryTrafficResponse` the request response data model
    */
    -(NSDictionary*) getDomainQueryTrafficSyncWithRequest:(ClouddnsserviceGetDomainQueryTrafficRequest*) getDomainQueryTrafficRequest;

    -(void)getDomainQueryTrafficAsyncWithRequest:(ClouddnsserviceGetDomainQueryTrafficRequest*) getDomainQueryTrafficRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceGetDomainQueryTrafficResponse* _Nullable getDomainQueryTrafficResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    operateMonitor sync request
    @param operateMonitorRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `operateMonitorResponse` the request response data model
    */
    -(NSDictionary*) operateMonitorSyncWithRequest:(ClouddnsserviceOperateMonitorRequest*) operateMonitorRequest;

    -(void)operateMonitorAsyncWithRequest:(ClouddnsserviceOperateMonitorRequest*) operateMonitorRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceOperateMonitorResponse* _Nullable operateMonitorResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    addUserViewIP sync request
    @param addUserViewIPRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addUserViewIPResponse` the request response data model
    */
    -(NSDictionary*) addUserViewIPSyncWithRequest:(ClouddnsserviceAddUserViewIPRequest*) addUserViewIPRequest;

    -(void)addUserViewIPAsyncWithRequest:(ClouddnsserviceAddUserViewIPRequest*) addUserViewIPRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceAddUserViewIPResponse* _Nullable addUserViewIPResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    addMonitorTarget sync request
    @param addMonitorTargetRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addMonitorTargetResponse` the request response data model
    */
    -(NSDictionary*) addMonitorTargetSyncWithRequest:(ClouddnsserviceAddMonitorTargetRequest*) addMonitorTargetRequest;

    -(void)addMonitorTargetAsyncWithRequest:(ClouddnsserviceAddMonitorTargetRequest*) addMonitorTargetRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceAddMonitorTargetResponse* _Nullable addMonitorTargetResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    addRR sync request
    @param addRRRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addRRResponse` the request response data model
    */
    -(NSDictionary*) addRRSyncWithRequest:(ClouddnsserviceAddRRRequest*) addRRRequest;

    -(void)addRRAsyncWithRequest:(ClouddnsserviceAddRRRequest*) addRRRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceAddRRResponse* _Nullable addRRResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    delUserView sync request
    @param delUserViewRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `delUserViewResponse` the request response data model
    */
    -(NSDictionary*) delUserViewSyncWithRequest:(ClouddnsserviceDelUserViewRequest*) delUserViewRequest;

    -(void)delUserViewAsyncWithRequest:(ClouddnsserviceDelUserViewRequest*) delUserViewRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceDelUserViewResponse* _Nullable delUserViewResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    operateRR sync request
    @param operateRRRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `operateRRResponse` the request response data model
    */
    -(NSDictionary*) operateRRSyncWithRequest:(ClouddnsserviceOperateRRRequest*) operateRRRequest;

    -(void)operateRRAsyncWithRequest:(ClouddnsserviceOperateRRRequest*) operateRRRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceOperateRRResponse* _Nullable operateRRResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    delUserViewIP sync request
    @param delUserViewIPRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `delUserViewIPResponse` the request response data model
    */
    -(NSDictionary*) delUserViewIPSyncWithRequest:(ClouddnsserviceDelUserViewIPRequest*) delUserViewIPRequest;

    -(void)delUserViewIPAsyncWithRequest:(ClouddnsserviceDelUserViewIPRequest*) delUserViewIPRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceDelUserViewIPResponse* _Nullable delUserViewIPResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getMonitor sync request
    @param getMonitorRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getMonitorResponse` the request response data model
    */
    -(NSDictionary*) getMonitorSyncWithRequest:(ClouddnsserviceGetMonitorRequest*) getMonitorRequest;

    -(void)getMonitorAsyncWithRequest:(ClouddnsserviceGetMonitorRequest*) getMonitorRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceGetMonitorResponse* _Nullable getMonitorResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateMonitor sync request
    @param updateMonitorRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateMonitorResponse` the request response data model
    */
    -(NSDictionary*) updateMonitorSyncWithRequest:(ClouddnsserviceUpdateMonitorRequest*) updateMonitorRequest;

    -(void)updateMonitorAsyncWithRequest:(ClouddnsserviceUpdateMonitorRequest*) updateMonitorRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceUpdateMonitorResponse* _Nullable updateMonitorResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getUserViewIP sync request
    @param getUserViewIPRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getUserViewIPResponse` the request response data model
    */
    -(NSDictionary*) getUserViewIPSyncWithRequest:(ClouddnsserviceGetUserViewIPRequest*) getUserViewIPRequest;

    -(void)getUserViewIPAsyncWithRequest:(ClouddnsserviceGetUserViewIPRequest*) getUserViewIPRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceGetUserViewIPResponse* _Nullable getUserViewIPResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getTargets sync request
    @param getTargetsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getTargetsResponse` the request response data model
    */
    -(NSDictionary*) getTargetsSyncWithRequest:(ClouddnsserviceGetTargetsRequest*) getTargetsRequest;

    -(void)getTargetsAsyncWithRequest:(ClouddnsserviceGetTargetsRequest*) getTargetsRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceGetTargetsResponse* _Nullable getTargetsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getMonitorAlarmInfo sync request
    @param getMonitorAlarmInfoRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getMonitorAlarmInfoResponse` the request response data model
    */
    -(NSDictionary*) getMonitorAlarmInfoSyncWithRequest:(ClouddnsserviceGetMonitorAlarmInfoRequest*) getMonitorAlarmInfoRequest;

    -(void)getMonitorAlarmInfoAsyncWithRequest:(ClouddnsserviceGetMonitorAlarmInfoRequest*) getMonitorAlarmInfoRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceGetMonitorAlarmInfoResponse* _Nullable getMonitorAlarmInfoResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    addMonitor sync request
    @param addMonitorRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addMonitorResponse` the request response data model
    */
    -(NSDictionary*) addMonitorSyncWithRequest:(ClouddnsserviceAddMonitorRequest*) addMonitorRequest;

    -(void)addMonitorAsyncWithRequest:(ClouddnsserviceAddMonitorRequest*) addMonitorRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceAddMonitorResponse* _Nullable addMonitorResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateDomain sync request
    @param updateDomainRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateDomainResponse` the request response data model
    */
    -(NSDictionary*) updateDomainSyncWithRequest:(ClouddnsserviceUpdateDomainRequest*) updateDomainRequest;

    -(void)updateDomainAsyncWithRequest:(ClouddnsserviceUpdateDomainRequest*) updateDomainRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceUpdateDomainResponse* _Nullable updateDomainResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateRR sync request
    @param updateRRRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateRRResponse` the request response data model
    */
    -(NSDictionary*) updateRRSyncWithRequest:(ClouddnsserviceUpdateRRRequest*) updateRRRequest;

    -(void)updateRRAsyncWithRequest:(ClouddnsserviceUpdateRRRequest*) updateRRRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceUpdateRRResponse* _Nullable updateRRResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    addUserView sync request
    @param addUserViewRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addUserViewResponse` the request response data model
    */
    -(NSDictionary*) addUserViewSyncWithRequest:(ClouddnsserviceAddUserViewRequest*) addUserViewRequest;

    -(void)addUserViewAsyncWithRequest:(ClouddnsserviceAddUserViewRequest*) addUserViewRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceAddUserViewResponse* _Nullable addUserViewResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    searchRR sync request
    @param searchRRRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `searchRRResponse` the request response data model
    */
    -(NSDictionary*) searchRRSyncWithRequest:(ClouddnsserviceSearchRRRequest*) searchRRRequest;

    -(void)searchRRAsyncWithRequest:(ClouddnsserviceSearchRRRequest*) searchRRRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceSearchRRResponse* _Nullable searchRRResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getUserView sync request
    @param getUserViewRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getUserViewResponse` the request response data model
    */
    -(NSDictionary*) getUserViewSyncWithRequest:(ClouddnsserviceGetUserViewRequest*) getUserViewRequest;

    -(void)getUserViewAsyncWithRequest:(ClouddnsserviceGetUserViewRequest*) getUserViewRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceGetUserViewResponse* _Nullable getUserViewResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getDomains sync request
    @param getDomainsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getDomainsResponse` the request response data model
    */
    -(NSDictionary*) getDomainsSyncWithRequest:(ClouddnsserviceGetDomainsRequest*) getDomainsRequest;

    -(void)getDomainsAsyncWithRequest:(ClouddnsserviceGetDomainsRequest*) getDomainsRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceGetDomainsResponse* _Nullable getDomainsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    addDomain sync request
    @param addDomainRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addDomainResponse` the request response data model
    */
    -(NSDictionary*) addDomainSyncWithRequest:(ClouddnsserviceAddDomainRequest*) addDomainRequest;

    -(void)addDomainAsyncWithRequest:(ClouddnsserviceAddDomainRequest*) addDomainRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceAddDomainResponse* _Nullable addDomainResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getViewTree sync request
    @param getViewTreeRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getViewTreeResponse` the request response data model
    */
    -(NSDictionary*) getViewTreeSyncWithRequest:(ClouddnsserviceGetViewTreeRequest*) getViewTreeRequest;

    -(void)getViewTreeAsyncWithRequest:(ClouddnsserviceGetViewTreeRequest*) getViewTreeRequest
    completionHandler:(void(^)(int statusCode,ClouddnsserviceGetViewTreeResponse* _Nullable getViewTreeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    clouddnsservice common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) clouddnsserviceCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)clouddnsserviceCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* ClouddnsserviceClient_h */
